package com.dylon.system.service;

import com.dylon.system.domain.SysModule;

import java.util.List;
import java.util.Map;

public interface ISysModuleService {

    /**
     * 查询模块管理数据
     * @param module 模块信息
     * @return 模块信息集合
     */
    public List<SysModule> selectModuleList(SysModule module);

    /**
     * 查询模块管理树
     * @param module 模块信息
     * @return 所有模块信息
     */
    public List<Map<String, Object>> selectModuleTree(SysModule module);

    /**
     * 通过模块ID查询模块
     * @param moduleId 模块ID
     * @return 模块对象信息
     */
    public SysModule selectModuleById(Long moduleId);

    /**
     * 校验模块名称是否唯一
     * @param module 模块信息
     * @return 结果
     */
    public String checkModuleNameUnique(SysModule module);

    /**
     * 通过模块ID删除模块
     * @param moduleId 模块ID
     * @return 结果
     */
    public boolean deleteModuleById(Long moduleId)throws Exception;

    /**
     * 修改保存模块信息
     * @param module 模块信息
     * @return 结果
     */
    public int updateModule(SysModule module);

    /**
     * 新增保存模块信息
     * @param module 模块信息
     * @return 结果
     */
    public int insertModule(SysModule module);

    /**
     * 模块状态修改
     * @param module 模块信息
     * @return 结果
     */
    public int changeStatus(SysModule module);

    /**
     * 查询模块被使用数量
     * @param moduleId 角色ID
     * @return 结果
     */
    public int countModuleUsedById(Long moduleId);

    /**
     * 查询模块子节点使用数量
     * @param moduleId 角色ID
     * @return 结果
     */
    public int countModuleChildById(Long moduleId);
}
